From 3aa051b44177fc1403acab295f9f833451c4b9f0 Mon Sep 17 00:00:00 2001 From: Dustin Lundquist Date: Mon, 28 Oct 2019 16:52:06 +0000 Subject: [PATCH] system: sysupgrade: close input side of pipe before reading MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When /usr/libexec/validate_firmware_image is not present on the system procd will hang indefinitely on the read() since the input side of the pipe is still open. Also fix pipe file descriptor leak when fork() fails. Signed-off-by: Dustin Lundquist Acked-by: Rafał Miłecki --- system.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/system.c b/system.c index 9879bca..65d3f09 100644 --- a/system.c +++ b/system.c @@ -434,6 +434,8 @@ static int validate_firmware_image_call(const char *file) switch (fork()) { case -1: + close(fds[0]); + close(fds[1]); return -errno; case 0: /* Set stdin & stderr to /dev/null */ @@ -454,11 +456,11 @@ static int validate_firmware_image_call(const char *file) } /* Parent process */ + close(fds[1]); tok = json_tokener_new(); if (!tok) { close(fds[0]); - close(fds[1]); return -ENOMEM; } @@ -476,7 +478,6 @@ static int validate_firmware_image_call(const char *file) } close(fds[0]); - close(fds[1]); err = -ENOENT; if (jsobj) { -- 2.30.2